package org.dezenho.server.RMI;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

import org.dezenho.common.RMI.ServerInterface;
import org.dezenho.server.SO.DezenhoServer;

/**
 * Classe de fachada, usada apenas para isolar a implementacao das classes SO e
 * RN
 * 
 * @author marcelasobrinhopereira
 * 
 */
@SuppressWarnings("serial")
public class ServerFacade extends UnicastRemoteObject implements
		ServerInterface {

	/**
	 * Construtor
	 */

	public ServerFacade() throws RemoteException {
		super();
	}

	/**
	 * Encaminha o pedido de conex�o do usuario para o servidor
	 * 
	 * @param IPUsuario
	 *            string que caracteriza o endereco do usuario
	 * @param nome
	 */
	public void conectaUsuario(String IPUsuario, String nome) {
		DezenhoServer.getInstance().conectaUsuario(IPUsuario, nome);
	}

	/**
	 * Encaminha o pedido de controle de rodada do desenhista para o servidor
	 * 
	 * @param idPartida
	 *            identifica qual partida a que o jogador pertence
	 */
	public void controlaRodada(Integer idPartida) throws RemoteException {
		DezenhoServer.getInstance().getPartida(idPartida).getRodada()
				.controlaRodada();
	}

	/**
	 * Encaminha o pedido de desconexao do usuario para o servidor
	 * 
	 * @param IPUsuario
	 *            string que caracteriza o endereco do usuario
	 */
	public void desconectaUsuario(String IPUsuario) throws RemoteException {
		DezenhoServer.getInstance().desconectaUsuario(IPUsuario);
	}

	/**
	 * Encaminha o pedido de insersao na sala de espera do usuario para o
	 * servidor
	 * 
	 * @param IPUsuario
	 *            string que caracteriza o endereco do usuario
	 */
	public void insereJogadorSalaEspera(String IPUsuario)
			throws RemoteException {
		DezenhoServer.getInstance().insereJogadorSalaEspera(IPUsuario);
	}

}
